package com.itheima.health.job;


import com.itheima.health.utils.aliyunoss.AliyunUtils;
import com.itheima.health.utils.resources.RedisConstant;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Set;


    @JobHandler(value = "heima.setmeal.clean.img.job") //  web配置JobHandler的名称
    @Component
    public class CleanSetmealImageJob extends IJobHandler {

        @Autowired
        private  RedisTemplate redisTemplate;

        /**
         * 但是spring的@Scheduled只支持6位，年份是不支持的，带年份的7位格式会报错：
         * Cron expression must consist of 6 fields (found 7 in "1/5 * * * * ? 2018")
         * 通过cron表达式 来配置 该方法的执行周期
         * **/

        @Override
        public ReturnT<String> execute(String s) throws Exception {
             //   execute    任务执行体   。。  jdk...  Fastjson
            //    清理 oss 多余 图片 。。。
            Set<String> difference = redisTemplate.opsForSet().difference(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
            //   集合1 多余  集合2  数据
            if(difference.size()!=0){
                for (String uuidfilename : difference) {
                       AliyunUtils.deleteFile(uuidfilename);
                }
                //   阿里云多余图片 已经 清理完成   redis  存储 图片信息 全部清理
                  redisTemplate.delete(RedisConstant.SETMEAL_PIC_RESOURCES);
                  redisTemplate.delete(RedisConstant.SETMEAL_PIC_DB_RESOURCES);
                 System.out.println("---阿里云图片清理完成---");
            }else{
                System.out.println("---任务调度执行一次---");
            }
            return SUCCESS;
        }

    }

